The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for providing zero copy data transfers without modifying host side protocol stack parameters.
Internet Small Computer System Interface (iSCSI) is an Internet Protocol (IP)-based storage networking standard for linking data storage facilities. By carrying SCSI commands over IP networks, iSCSI is used to facilitate data transfers over intranets and to manage storage over long distances. iSCSI can be used to transmit data over local area networks (LANs), wide area networks (WANs), or the Internet and can enable location-independent data storage and retrieval. The protocol allows clients (called initiators) to send SCSI commands, as command descriptor blocks (CDBs), to SCSI storage devices (targets) on remote servers. It is a storage area network (SAN) protocol, allowing organizations to consolidate storage into data center storage arrays while providing hosts (such as database and web servers) with the illusion of locally-attached disks.
Software implementations of the iSCSI protocol stack are layered on top of the Transmission Control Protocol (TCP)/IP implementation of the operating system within a storage controller. This means that each iSCSI packet is copied to TCP buffers before it can be transmitted over the network connection by the TCP/IP protocol stack. This copying to the TCP buffer for sending of the iSCSI packet over the network connection is done by the sendmsg( ) interface provided by the TCP. This copy operation is expensive in terms of processor utilization and thus, hinders full bandwidth and input/output processor utilization on high speed interconnects.